Cloud computing (cloud, cloud environment) is typically delivery of computing as a service rather than a product, wherein shared resources, software and information are provided as a utility over a network. Cloud computing provides computation, software applications, data access, data management and storage resources without requiring cloud users to know the location and other details of the computing infrastructure. End users typically access cloud based applications through a web browser or a light weight desktop or mobile applications while the business software and data are typically stored on servers at a remote location. Cloud application providers strive to give the same or better service and performance than if the software programs were installed locally on end-user computers. Software developers use Integrated Development Environment (IDE) when building software applications to be deployed in the cloud.
One of the goals of cloud computing is to minimize Total Cost of Ownership (TCO) and resource consumption. There may be several factors that affect the consumption and TCO in a cloud infrastructure. For example, proper selection of runtime components, which are needed by a customer application to be operable in the cloud is one of the factors that may affect resource consumption and TCO in a cloud environment. The set of components for provisioning a developed product (besides the software application itself) usually includes core parts of runtime environment (e. g. Java® server for the Java® based applications); enterprise services, which provide additional functionality to the deployed applications; and internal configuration information. Another factor is complexity of the provisioning process: the more complex the provisioning process is, and the more steps it involves, the more likely the process might fail at a certain point. Thus, the predictability of failures in the provisioning process is another factor. For example, when there are many steps involved in the preparation of the application for deployment in the cloud, a possible failure in the final stages will incur a greater cost on the resources wasted up to that point.
Equinox® p2 is a component of the Equinox® project, Equinox® p2 provides a provisioning platform for Eclipse® based applications. Based on the Eclipse® Equinox® Provisioning Platform (p2), cloud deployment process comprises publishing of an Eclipse® product definition, containing and configuring software application artifacts that need to be installed during the software application start. As a result of the deployment, the cloud distribution, cloud services (used from the software application) and installable units of the deployed software application are merged in the Eclipse® product (p2 product) and published in a p2 update site, stored in a cloud repository. During the start of the corresponding software application component, the published p2 product is installed via p2 from the repository to the file system of a running virtual machine image.